#pragma once
namespace xtb
{
	template<class iterator, class Ref, class Ptr>
	struct Reverseiterator
	{
		typedef Reverseiterator<iterator, Ref, Ptr> self;
		Reverseiterator con;
		Reverseiterator(iterator it)
			:con(it)
		{
			;
		}
		self& operator++()
		{
			--con;
			return con;
		}
		self& operator++(int)
		{
			self tmp(con);
			--tmp;
			return *con;
		}
		self& operator--()
		{
			++con;
			return con;
		}
		self operator--(int)
		{
			self tmp(con);
			++tmp;
			return con;
		}
		Ref operator*()
		{
			self tmp(con);
			return *(--tmp);
		}
		bool operatot != (const self& s)
		{
			return con != s.con;
		}
	};
}